https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/
给你一个整数数组 nums 和一个整数 k ，按以下方法修改该数组：

选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。
重复这个过程恰好 k 次。可以多次选择同一个下标 i 。

以这种方式修改数组后，返回数组 可能的最大和 。

 

class Solution {
public:
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        int m=0,minelem=INT_MAX,n=nums.size();

        for(auto e:nums)
        {
            if(e<0) ++m;
            minelem=min(minelem,abs(e));
        }

        int ret=0;
        if(k<=m)
        {
            sort(nums.begin(),nums.end());
            for(int i=0;i<k;i++)
                ret+=abs(nums[i]);
            for(int i=k;i<n;i++)
                ret+=nums[i];

        }
        else //m<k  k-m是奇数还是偶数
        {
            for(auto e:nums)
                ret+=abs(e);
            if((k-m)%2==1)
                ret-=2*minelem;
        }
        return ret;   
    }
};